/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controladores;

    import DaoExtendido.HoteleriaExtension;
    import Dao.exceptions.IllegalOrphanException;
    import Dao.exceptions.NonexistentEntityException;
    import Dao.exceptions.PreexistingEntityException;
    import Logico.Hoteleria;
import java.util.ArrayList;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.JOptionPane;

public class ControladorHoteleria {
    HoteleriaExtension daoHoteleria;
    ConnectionFactory conection;

    public ControladorHoteleria() {

        conection = new ConnectionFactory();
        daoHoteleria = new HoteleriaExtension(conection.getFactory());
    }

    public boolean guardar(String nombre, String direccion, String telefono, String email, String paginaweb, String infohabitacionescosto) {

        boolean guardado = false;

        Hoteleria hoteleria = new Hoteleria();        
        hoteleria.setNombre(nombre);
        hoteleria.setDireccion(direccion);
        hoteleria.setTelefono(telefono);
        hoteleria.setEmail(email);
        hoteleria.setPaginaweb(paginaweb);
        hoteleria.setInfohabitacionescosto(infohabitacionescosto);       
                
        try {
            daoHoteleria.create(hoteleria);
            guardado = true;

        } catch (PreexistingEntityException ex) {
            JOptionPane.showMessageDialog(null, "Ya existe un hotel con el nombre: " + nombre + ". Por favor inténtelo de nuevo");
        } catch (Exception ex) {
            Logger.getLogger(ControladorHoteleria.class.getName()).log(Level.SEVERE, null, ex);
        }

        return guardado;
    }
    
    public boolean borrar(String direccion) {

        boolean borrado = false;
        try {
                  
            daoHoteleria.destroy(direccion);
            borrado = true;
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ControladorHoteleria.class.getName()).log(Level.SEVERE, null, ex);
        }        

        return borrado;
    }

    public boolean modificar(String nombre, String direccion, String telefono, String email, String paginaweb, String infohabitacionescosto) {

        boolean modificado = false;

        Hoteleria HoteleriaEncontrado = this.buscar(direccion);

        if (HoteleriaEncontrado != null) {
            
            HoteleriaEncontrado.setNombre(nombre);            
            HoteleriaEncontrado.setTelefono(telefono);
            HoteleriaEncontrado.setEmail(email);
            HoteleriaEncontrado.setPaginaweb(paginaweb);
            HoteleriaEncontrado.setInfohabitacionescosto(infohabitacionescosto);  

            try {

                daoHoteleria.edit(HoteleriaEncontrado);
                modificado = true;
            } catch (IllegalOrphanException ex) {
                Logger.getLogger(ControladorHoteleria.class.getName()).log(Level.SEVERE, null, ex);
            } catch (NonexistentEntityException ex) {
                Logger.getLogger(ControladorHoteleria.class.getName()).log(Level.SEVERE, null, ex);
            } catch (Exception ex) {
                Logger.getLogger(ControladorHoteleria.class.getName()).log(Level.SEVERE, null, ex);
            }

        } else {
            JOptionPane.showMessageDialog(null, "El hotel no se encuentra en nuestro sistema.");
        }

        return modificado;
    }
    
    public Hoteleria buscar(String direccion) {

        return daoHoteleria.findHoteleria(direccion);
    }
    
    public ArrayList<Hoteleria> buscarPorNombre(String nombre) {

        return daoHoteleria.buscarPorNombre(nombre);
    }
    
    public List<Hoteleria> listarHotelerias() {

        return daoHoteleria.findHoteleriaEntities();
    }
    
    
}
